//----------------------------------------------------------------------------------
// CEngine class
// Author: Oscar Serrano
//
// Description:
// Clase principal del motor, contiene un CCore y un CCprocess, los cuales gestiona
//----------------------------------------------------------------------------------

#pragma once

#ifndef ENGINE_H
#define ENGINE_H

//--Includes---------------
#include "Engine\Engine_Defs.h"
#include "Utils\Base.h"
#include "Utils\Timer.h"

//--Forward Declaration----
class CProcess;
class CCore;
class CRenderManager;
class CLogger;
//-------------------------

class CEngine
{
public:
	CEngine								();
	~CEngine							();
	void				Init			(HWND hWnd);
	void				DeInit			();
	void				Update			();
	void				Render			();
	void				SetProcess		(CProcess* p);
	void				LoadXML			(const std::string& pathInitXML);
	SEngineInitParams&	GetInitParams	() {return m_sEngineInitParams;}

private:
	void				RenderScene		(CRenderManager* gm);
	void				UpdateActions	();

private:
	CProcess	*		m_pProcess;
	CCore		*		m_pCore;
	SEngineInitParams	m_sEngineInitParams;
	CTimer				m_timer;
	CLogger		*		m_pLogger;

};

#endif

